package com.culturalCenter.dataCenter.mapper.activity;

import com.culturalCenter.dataCenter.customEntity.activity.CustomActivityNumber;
import com.culturalCenter.dataCenter.entity.activity.ActivityInfoCount;
import com.culturalCenter.dataCenter.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 活动基本信息统计表(ActivityInfoCount)表数据库访问层
 *
 * @author makejava
 * @since 2020-10-29 15:33:26
 */
@Mapper
public interface ActivityInfoCountMapper extends BaseMapper<ActivityInfoCount> {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     *
     * @return 实例对象
     */
    ActivityInfoCount queryById(@Param("id") String id);

    /**
     * 查询指定行数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     *
     * @return 对象列表
     */
    List<ActivityInfoCount> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);

    /**
     * 分页查询所有数据
     *
     * @return 对象列表
     */
    List<ActivityInfoCount> findPageAll();

    /**
     * 通过实体作为筛选条件查询
     *
     * @param activityInfoCount 实例对象
     *
     * @return 对象列表
     */
    List<ActivityInfoCount> queryAll( ActivityInfoCount activityInfoCount);

    /**
     * 新增数据
     *
     * @param activityInfoCount 实例对象
     *
     * @return 影响行数
     */
    int insert(ActivityInfoCount activityInfoCount);

    /**
     * 选择列增加
     *
     * @param activityInfoCount 实例对象
     *
     * @return 影响行数
     */
    int insertSelective( ActivityInfoCount activityInfoCount);

    /**
     * 修改数据
     *
     * @param activityInfoCount 实例对象
     *
     * @return 影响行数
     */
    int update( ActivityInfoCount activityInfoCount);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     *
     * @return 影响行数
     */
    int deleteById(@Param("id") String id);

    /**
     * 查询参与情况
     *
     * @param activityId
     *
     * @return
     */
    List<ActivityInfoCount> queryByActivityId(@Param("activityId") String activityId);

    /**
     * 签到和考勤列表
     *
     * @param activityId
     *
     * @return
     */
    List<ActivityInfoCount> querySignInAndAttendance(@Param("activityId") String activityId);

    /**
     * 根据活动id获取活动人数情况
     *
     * @param activityId
     *
     * @return
     */
    List<CustomActivityNumber> queryActivitiesByActivityId(@Param("activityId") String activityId);

    /**
     * 报名结束
     *
     * @param activityId
     *
     * @return
     */
    List<ActivityInfoCount> querySignUpInfoByActivityId(@Param("activityId") String activityId);

    /**
     * 获取浏览量中的报名人数
     *
     * @param activityId
     *
     * @return
     */
    List<ActivityInfoCount> getApplicantByActivityId(@Param("activityId") String activityId);

    /**
     * 获取浏览量及报名人数
     *
     * @param activityId
     *
     * @return
     */
    List<ActivityInfoCount> getApplicantNumberByActivityId(@Param("activityId") String activityId);

    /**
     * @param activityId
     *
     * @return
     */
    List<ActivityInfoCount> selectBrowseNum(@Param("activityId") String activityId);

    /**
     * 统计活动基本信息
     *
     * @return
     */
    List<ActivityInfoCount> selectActivityInfo();

    /**
     * 更新有关活动基础表的信息
     *
     * @param countList
     *
     * @return
     */
    int insertOrUpdateActivityInfo(@Param("countList") List<ActivityInfoCount> countList);

    /**
     * 统计活动签到信息
     *
     * @return
     */
    List<ActivityInfoCount> selectUserActivityInfo();

    /**
     * 更新有关用户活动表的信息
     *
     * @param countList
     *
     * @return
     */
    int insertOrUpdateUserActivityInfo(@Param("countList") List<ActivityInfoCount> countList);

    int clearTable();

}
